package com.hooya.fa.eu.biz.dao.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hooya.fa.eu.api.bo.*;
import com.hooya.fa.eu.biz.dao.entity.TradeRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description 1
 * @Author : Zongz
 * @Copyright Copyright (c) 豪雅集团
 * @Create 2023/11/28
 * @Version 1.0.0
 */
@Mapper
public interface TradeRecordMapper extends BaseMapper<TradeRecord> {

    void insertBatchSomeColumn(List<TradeRecord> list);

	@DS("fa_eu_daily")
	void insertBatchSomeColumnDaily(List<TradeRecord> list);

    /**
     * 买卖记录（含价格和海运费）
     *
     * @param start
     * @param end
     * @return
     */
    List<TradeRecordHisBO> getMmHisBoListByDate(@Param("start") String start, @Param("end") String end);

    /**
     * 买卖记录（时间范围内-最早被买卖的的产品【每产品取一条】）
     *
     * @param start
     * @param end
     * @return
     */
    List<TradeRecord> getMmListByDate(@Param("start") String start, @Param("end") String end);

    /**
     * 买卖记录（主数据源）
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<TradeRecordBO> getB2bBoListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 销售记录（主数据源，含买家公司和买家名称）
     * 注：a表的数据（即主表）是根据发货时间清洗进来的，所以会有除本月的订单数据，有可能会有上月月底，甚至几个月前的订单数据（存在2月订单，10月发货，但属于极少数情况）
     * 所以在 left join b 表中 dateTime（数据登记时间）条件的开始时间需要拉长
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<SellRecordBO> getB2cBoListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 报损主数据
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<LossesBO> getBsBoListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 采购数据
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<PurchaseBO> getCgBoListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 退货数据
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<ReturnedGoodsBO> getThBoListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 转运数据(转出与转入)
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<TransshipBO> getZyBoListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 转运记录（含价格和海运费）
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<TradeRecordHisBO> getZyHisBoListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 转运记录（时间范围内-最早被买卖的的产品【每产品取一条】）
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<TradeRecord> getZyListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);
}
